TypeScript string型をliteral型だと気づかせる
asを使えば気づかせられる
code:ts
function iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo'
};
iTakeFoo(test.someProp); // Error: Argument of type string is not assignable to parameter of type 'foo'
literal に対応する文字列を普通に渡しても、string型だから違うよとエラーが出るので
code:as
function iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo' as 'foo'
};
iTakeFoo(test.someProp); // Okay!
as を使って気づかせる
もしくは、型アノテーションを使う
code:ts
function iTakeFoo(foo: 'foo') { }
type Test = {
someProp: 'foo',
}
const test: Test = { // Annotate - inferred someProp is always === 'foo'
someProp: 'foo'
};
iTakeFoo(test.someProp); // Okay!
as const を使うと更に楽だと教えてもらった
code:ts
function iTakeFoo(foo: 'foo') { }
const test = {
someProp: 'foo'
} as const;
iTakeFoo(test.someProp); // Okay!